﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MakeIT.Deo.Negocios;
using System.Configuration;

namespace MakeIT.Deo.Apresentacao
{
    public partial class Default : System.Web.UI.Page
    {
        cliente clienteVO = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Util.logAcesso("Home", null, null, null, null);

                clienteVO = (cliente)this.Session["customerActive"];
                bool? notificacao = (bool?)this.Session["DebitoNotificado"];

                if (clienteVO != null)
                {
                    if (notificacao == null || !notificacao.Value)
                    {
                        //procurar por débitos deste cliente
                        DebitoBO debitoBO = new DebitoBO();
                        List<debito> listaDebito = debitoBO.RecuperaDebito(null, clienteVO.IdCliente, null);

                        bool panelPagSeguroVisible = false;
                        bool panelPagSeguroEmAbertoVisible = false;
                        if (listaDebito != null && listaDebito.Count > 0)
                        {
                            foreach (debito debitoVO in listaDebito)
                            {
                                if (debitoVO.Status.Equals("Em aberto"))
                                {
                                    this.ltCobranca.Text += debitoVO.Descricao + " - Valor: " + debitoVO.Valor.ToString() + "<br />";
                                    panelPagSeguroVisible = true;
                                }
                                else if (!debitoVO.Status.Equals("Completo"))
                                {
                                    this.ltPagSeguro.Text += debitoVO.Descricao + " - Valor: " + debitoVO.Valor.ToString() + " - Situa&ccedil;&atilde;o: " + debitoVO.Status + "<br>";
                                    panelPagSeguroEmAbertoVisible = true;
                                }
                            }
                            PanelPagSeguro.Visible = panelPagSeguroVisible;
                            PanelPagSeguroAndamento.Visible = panelPagSeguroEmAbertoVisible;
                            this.Session["DebitoNotificado"] = true;
                        }
                    }
                }
            }
            
            conteudoestatico conteudoVO = null;
            ConteudoBO conteudoBO = null;
            try
            {
                conteudoBO = new ConteudoBO();
                conteudoVO = conteudoBO.RecuperaConteudo("Home");

                if (!(conteudoVO == null))
                {
                    this.LiteralHome.Text = CadastroConteudo.imagemTagReplace(conteudoVO.conteudoProducao, conteudoVO.idConteudoEstatico);
                }
            }
            catch (Exception ex)
            {
            }
        }

        protected void btBusca_Click(object sender, EventArgs e)
        {
            if (this.TextBoxBusca.Text.Trim().Length > 0)
            {

                Util.logAcesso("Busca", null, null, null, null);
                
                string busca = this.TextBoxBusca.Text;

                NoticiaBO noticiaBO = new NoticiaBO();
                List<noticia> listNoticia = noticiaBO.RecuperaNoticia(busca, null,true,true);
                this.RepeaterNoticia.DataSource = listNoticia;
                this.RepeaterNoticia.DataBind();

                FamiliaBO familiaBO = new FamiliaBO();
                List<familia> listFamilia = familiaBO.RecuperaFamilia(busca, true);
                this.RepeaterFamilia.DataSource = listFamilia;
                this.RepeaterFamilia.DataBind();

                SubFamiliaBO subFamiliaBO = new SubFamiliaBO();
                List<subfamilia> listSubFamilia = subFamiliaBO.RecuperaSubFamilia(null, busca, busca, null, true);
                this.RepeaterSubFamilia.DataSource = listSubFamilia;
                this.RepeaterSubFamilia.DataBind();

                ProdutoBO produtoBO = new ProdutoBO();
                List<produto> listProduto = produtoBO.RecuperaProduto(null, busca, busca, null, true);
                if (listProduto != null) listProduto = listProduto.Distinct().ToList();
                this.RepeaterProdutos.DataSource = listProduto;
                this.RepeaterProdutos.DataBind();

                this.RepeaterDownload.DataSource = null;
                this.RepeaterDownload.DataBind();
            
            }
        }

        protected void btDown_Click(object sender, EventArgs e)
        {
            Util.logAcesso("Busca", null, null, null, null);
            DocumentoBO documentoBO = new DocumentoBO();
            List<documento> listDocumento = documentoBO.RecuperaDocumentos(true);
            this.RepeaterDownload.DataSource = listDocumento;
            this.RepeaterDownload.DataBind();

            this.RepeaterNoticia.DataSource = null;
            this.RepeaterNoticia.DataBind();
            this.RepeaterFamilia.DataSource = null;
            this.RepeaterFamilia.DataBind();
            this.RepeaterSubFamilia.DataSource = null;
            this.RepeaterSubFamilia.DataBind();
            this.RepeaterProdutos.DataSource = null;
            this.RepeaterProdutos.DataBind();
        }

        protected void btnPagSeguro_Click(object sender, ImageClickEventArgs e)
        {

            clienteVO = (cliente)this.Session["customerActive"];

            if (clienteVO != null)
            {

                bool enviarPagSeguro = false;

                DebitoBO debitoBO = new DebitoBO();
                List<debito> listaDebito = debitoBO.RecuperaDebito(null, clienteVO.IdCliente, null);

                if (listaDebito != null && listaDebito.Count > 0)
                {
                    foreach (debito debitoVO in listaDebito)
                    {
                        if (debitoVO.Status.Equals("Em aberto"))
                        {
                            // informar os produtos do carrinho de compras para o Pag Seguro
                            UOL.PagSeguro.Produto produto = new UOL.PagSeguro.Produto();
                            produto.Codigo = debitoVO.IdDebito.ToString();
                            produto.Descricao = debitoVO.Descricao;
                            produto.Frete = 0.0;
                            produto.Peso = 0;
                            produto.Quantidade = 1;
                            produto.Valor = double.Parse(debitoVO.Valor.ToString());
                            produto.ValorExtra = 0.0;
                            this.VendaPagSeguro1.Produtos.Add(produto);

                            enviarPagSeguro = true;
                        }
                    }
                    PanelPagSeguro.Visible = true;
                }

                if (enviarPagSeguro)
                {

                    //Efetuando a venda
                    //Código do Comprador, pedido, controle, etc    
                    this.VendaPagSeguro1.CodigoReferencia = clienteVO.IdCliente.ToString();
                    this.VendaPagSeguro1.EmailCobranca = ConfigurationManager.AppSettings["PagSeguro.EmailCobranca"];
                    this.VendaPagSeguro1.TipoCarrinho = UOL.PagSeguro.TipoCarrinho.CarrinhoProprio;
                    this.VendaPagSeguro1.TipoFrete = UOL.PagSeguro.TipoFreteVenda.Sedex;

                    this.VendaPagSeguro1.Cliente = new UOL.PagSeguro.Cliente();
                    this.VendaPagSeguro1.Cliente.Nome = clienteVO.Nome;
                    this.VendaPagSeguro1.Cliente.Endereco = clienteVO.Endereco;
                    this.VendaPagSeguro1.Cliente.Numero = clienteVO.EnderNum;
                    this.VendaPagSeguro1.Cliente.ComplementoEndereco = clienteVO.EnderCompl;
                    this.VendaPagSeguro1.Cliente.Bairro = clienteVO.Bairro;
                    this.VendaPagSeguro1.Cliente.Cidade = clienteVO.Cidade;
                    this.VendaPagSeguro1.Cliente.Uf = clienteVO.Estado;
                    this.VendaPagSeguro1.Cliente.Pais = "BRL";
                    this.VendaPagSeguro1.Cliente.Cep = clienteVO.CEP;
                    this.VendaPagSeguro1.Cliente.DDD = int.Parse((clienteVO.Tipo.Equals("PF")?clienteVO.FoneRes:clienteVO.FoneComl).Substring(0, 2));
                    this.VendaPagSeguro1.Cliente.Telefone = int.Parse((clienteVO.Tipo.Equals("PF") ? clienteVO.FoneRes : clienteVO.FoneComl).Substring(2));
                    this.VendaPagSeguro1.Cliente.Email = clienteVO.Email;

                    // Este é o endereço do servidor da UOL
                    this.VendaPagSeguro1.UrlPagSeguro = ConfigurationManager.AppSettings["PagSeguro.URL"];

                    // Inicia a transa&ccedil;&atilde;o de pagamento com o Pag Seguro
                    this.VendaPagSeguro1.Executar(this.Response);

                    // o acompanhamento da transa&ccedil;&atilde;o é feita pela p&aacute;gina RetornoPagSeguro.aspx
                    // que é invocada automaticamente pelo Pag Seguro
                }
            }
        }

        protected void ButtonClosePagSeguro_Click(object sender, ImageClickEventArgs e)
        {
            this.PanelPagSeguro.Visible = false;
            this.PanelPagSeguroAndamento.Visible = false;
        }
    }
}
